﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using Sistema_Totem.Logica.Clases;
using Sistema_Totem.Datos.SqlServer;

namespace Sistema_Totem.Vista.Usuarios
{
    public partial class CrearUsuario : System.Web.UI.Page
    {
        List<Rol> listaRol = new List<Rol>();

        protected void Page_Load(object sender, EventArgs e)
        {
            //if (Session["tipo_usuario"].ToString() != "Administrador")
            //{
            //    Response.Redirect("Login1.aspx");
            //}

            if (!IsPostBack)
            {
                
            }          
            this.CargarRolUsuario();      
        }
        // Verificamos que el usuario ya no exista en la BD
        public int VerificarUsuario(String nombreRol)
        {
            int verificar = 0;
            Usuario usuario = new Usuario();
            verificar = usuario.VerificarConsultarUsuario(nombreRol);
            return verificar;
        }
        // Metodo para agregar el nuevo usuario
        public void AgregarUsuario(object sender, EventArgs e)
        {
            try
            {   // le asignamos a la variable verificar lo que retorno en la BD
                int verificador = VerificarUsuario((String)this.ComboRol.SelectedItem.Text);
                if (verificador == 0)
                {
                    Usuario usuario = new Usuario();
                    usuario.Nombre = this.TextNombre.Text;
                    usuario.Apellido = this.TextApellido.Text;
                    usuario.Nickname = this.TextNick.Text;
                    usuario.Correo = this.TextCorreo.Text;
                    usuario.Telefono = this.TextTelefono.Text;
                    usuario.Nombre = this.TextNombre.Text + " " + this.TextApellido.Text;
                    // Verificamos que las clave introducida sean iguales de lo contrario, se muestra un mensaje de error
                    if (TextClave.Text.Equals(TextVerificarClave.Text))
                    {
                        // Verificamos que selecciono un rol en el comboBox
                        if (!this.ComboRol.SelectedItem.Text.Equals("-----------------Seleccione------------------"))
                        {
                            String nombreRol = (String)this.ComboRol.SelectedItem.Text;
                            usuario.Rol.Id = BuscarSelecionRol(nombreRol);
                            usuario.Rol.Nombre = nombreRol;
                        }
                        // le asignamos al objeto usuario la clave tipeada en el texbox
                        usuario.Clave = this.TextClave.Text;
                        // le pasamos por parametro al metodo AgregarUsuario mi objeto del tipo Usuario
                        int idVerificar = usuario.AgregarUsuario(usuario);
                        this.LimpiarAtributos();
                        Mensaje(1,"");
                    }
                    else
                    {
                        if (!TextClave.Text.Equals(TextVerificarClave.Text))
                        {
                            Mensaje(0,"");
                        }
                    }
                }
                else
                {
                    Mensaje(2,"");
                    this.LimpiarAtributos();
                }
            }
            catch(Exception error)
            {
                Mensaje(0,error.Message);
            }
        }
        // Cargamos el rol de los usuarios
        public void CargarRolUsuario()
        {
            Rol rol = new Rol();
            listaRol = rol.ListaRoles();
            // Recorremos la lista de roles para solo traer los roles del Sismtea
            foreach (Rol roles in listaRol)
            {
                if ((roles.TipoRol == "Sistema") || (roles.TipoRol == "sistema")){
                   this.ComboRol.Items.Add(roles.Nombre);
                }
            }

        }
        // BUscar rol seleccionado
        public int BuscarSelecionRol(String nombreRol)
        {
            int idRol = 0;
            foreach (Rol roles in listaRol)
            {
                if (roles.Nombre == nombreRol)
                    idRol = roles.Id;
            }

            return idRol;
        }
        // Metodo para imprimir los mensajes de exito o de error
        public void Mensaje(int valorMensaje, String mensaje)
        {
             if (valorMensaje == 1)
             {
                MensajeDeTransaccion.Text = "El Usuario se agrego con exito";
                
                MensajeDeTransaccion.Visible = true;
             }
             else
             {
                 if (valorMensaje == 0)
                 {
                    MensajeDeTransaccion.Text = "Operacion Fallida: " + mensaje;
                   
                    MensajeDeTransaccion.Visible = true;
                }
             }
             if (valorMensaje == 2)
             {
                 MensajeDeTransaccion.Text = "Operacion Fallida ya hay un Usuario con ese ROL en el SISTEMA";

                 MensajeDeTransaccion.Visible = true;
             }
        }
        // Limpiamos cada uno de los atributos con un calor vacio
        public void LimpiarAtributos()
        {
            this.TextNombre.Text         = "";
            this.TextApellido.Text       = "";
            this.TextNick.Text           = "";
            this.TextCorreo.Text         = "";
            this.TextTelefono.Text       = "";
            this.TextClave.Text          = "";
            this.TextVerificarClave.Text = "";
            this.ComboRol.Items.RemoveAt(1);
            this.ComboRol.Items.RemoveAt(2);
            this.ComboRol.Items.RemoveAt(3);
        }
    }
}